﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Core.DataAccess;

namespace Core.BusinessLogic.Interfaces
{
    public interface IAccountService
    {
        bool UsernameInUse(string Username);
        bool EmailInUse(string Email);
        string Login(string Username, string Password);
        void Logout();
        Account GetAccountByID(int AccountID);
        Account GetAccountByEmail(string Email);
        Account GetAccountByUsername(string Username);
        void SaveAccount(Account account);
        void AddPermission(Account account, Permission permission);
        List<Account> GetAllAccounts(Int32 PageNumber, Int32 pageSize);
        Account RegisterWithFacebookAccount(FacebookAccount fa);
        void LoginWithFacebookAccount(FacebookAccount fa);
        List<Account> GetAccountsByAccountIDList(List<Int32> accountIDs);
        bool UpdatePassword(int accountID, string password);
        bool CheckPassword(string accountID, string password);
        List<Account> GetRandomListAccount();
        List<Account> GetListAccountsByTextSearch(string text);
        int CheckAccountByAccountID(int accountID, int friendAccountID);
        int GetCountLoginByUsername(string username);
        void UpdateCountLoginByUsername(string username);
        void ResetCountLoginByUsername(string username);
        void IsLockAccount(string username, bool isLock);
        List<Account> GetAllAccounts();
        void UpdateMember_AdminPage(int accountID, int levelID, bool isLock);
        void DeleteAccountByAccountID(int accountID);
        void DeleteAccount(Account account);
        string GetPlainTextByAccountID(int accountID);
        int GetLevelIDByAccountID(int accountID);
        int GetScoreByAccountID(int accountID);
    }
}
